home *** CD-ROM | disk | FTP | other *** search
/ HyperPC 2 / HyperPC 2 - Disc 1.iso / 01_必須ソフト!頼んだぜ! / InternetExplorer5 / Msie_50 / dcom95.exe / 1033 / RCDATA / CABINET / relnotes.txt < prev    next >
Text File  |  1999-02-12  |  28KB  |  653 lines

  1. DCOM95 1.3
  2. リリース ノート
  3. 最終更新日: 1998年11月13日
  4.  
  5. DCOM95 は、Microsoft(R) Windows(R) 95 で分散 COM (DCOM) をサポートし
  6. ます。DCOM ワイヤ プロトコルによって、LAN、WAN、またはインターネット
  7. 上の異なるコンピュータにある ActiveX(R) コントロール、スクリプト、お
  8. よび Java アプレットなどのコンポーネント オブジェクト モデル (COM)
  9.  コンポーネン間の通信の信頼性、安全性、および効率を高めます。DCOM に
  10. よって、異なる場所にいるユーザーやアプリケーションに対して、アプリケ
  11. ーションを配布できます。
  12.  
  13. 目次
  14. ====
  15. I.   新しい機能
  16. II.  解決された問題
  17. III. 既知の問題
  18. IV.  Windows NT 上の DCOM との違い
  19. V.   再配布
  20. VI.  サポート情報
  21. VII. ファイル一覧
  22.  
  23. I. 新しい機能
  24. -------------
  25.  
  26. DCOM95 を古いバージョンに置き換えることはできない
  27.  
  28. DOM95 の以前のリリースでは、DCOM95 の新しいバージョンを、古いバージ
  29. ョンに置き換えることができました。現在は、インストールでバージョン番
  30. 号が確認され、新しいバージョンに古いバージョンを上書きすることはでき
  31. ません。この変更によって、DLL のバージョンが違うことによる問題を回避
  32. できます。
  33.  
  34. Visual Studio 6.0 プロセスの監視をサポート
  35.  
  36. Visual Studio 6.0 サポートとして、DCOM95 は開発者がアプリケーション
  37. の動作、パフォーマンス、および構造を理解できるように情報の監視を行い
  38. ます。Windows 95 を実行中のコンピュータで Visual Studio Analyzer を
  39. 使用する場合、常に DCOM95 のこのバージョンを使用する必要があります。
  40.  
  41. セットアップ プログラムが作成する新しいディレクトリ
  42.  
  43. セットアップ プログラムは、システム ディレクトリの下に DCOM95 という
  44. 名前のディレクトリを作成します。『使用許諾契約書』およびほかのファイ
  45. ルは、このディレクトリに格納されます。また、セットアップ プログラム
  46. は、OLDOLE という名前のディレクトリを DCOM95 の下に作成します。この
  47. ディレクトリには、古い DCOM95 または OLE のバイナリが保存されます。
  48. これらのファイルは、DCOM95 をアンインストールすると、元に戻されます。
  49.  
  50. COM インターネット サービス
  51.  
  52. COM インターネット サービス (CIS) によって、クライアントとサーバーは 
  53. COM を使ってインターネット上で接続することができます。CIS は、次の
  54. 機能を提供します。
  55. *    新しい DCOM プロトコル、Tunneled TCP
  56. *    新しいタイプのモニカ、OBJREF モニカ
  57. *    新しい CISCNFG ユーティリティ
  58.  
  59. Windows 95 の CIS クライアント サポートのために、DCOM95 および 
  60. DCOMCFG の両方をインストールする必要があります。次に DCOMCFG ユーテ
  61. ィリティをインストールしたときにインストールされた CISCNFG ツールを
  62. 使って、リモート プロセスを使うためのプロトコルを定義するレジストリ 
  63. キーを変更します。コマンド プロンプトで次のコマンドを入力します。
  64.     ciscnfg <プロトコル>
  65.  
  66. <プロトコル> は、次のいずれかを指定します。
  67. *    RPC を使用する場合は rpc
  68. *    HTTP を使用する場合は http
  69. *    最初に TCP を試し、サーバーがタイム アウトになった場合は HTTP を
  70.     試す場合は tcp_http
  71.  
  72. ciscnfg コマンドには、使い方を表示する引数はありません。
  73.  
  74. Tunneled TCP プロトコルを使用するために、SDK を更新する必要はありま
  75. せん。
  76.  
  77. OBJREF モニカは、更新されました。
  78.  
  79. CreateObjrefMoniker
  80.  
  81. オブジェクトへのポインタに基づき OBJREF モニカを作成します。
  82. WINOLEAPI CreateObjrefMoniker(
  83.     LPUNKNOWN pUnk, //Pointer to the object
  84.     LPMONIKER *ppMk //Address of pointer to OBJREF moniker
  85. );
  86.  
  87. パラメータ
  88.  
  89. pUnk
  90.  
  91. モニカがあるオブジェクトの IUnknown インターフェイスへのポインタ。
  92.  
  93. ppMk
  94.  
  95. 作成された OBJREF モニカの IMoniker インターフェイスへのポインタの
  96. アドレス。
  97.  
  98. 戻り値
  99.  
  100. この関数は、次の戻り値と同様に標準の戻り値 E_OUTOFMEMORY および 
  101. E_UNEXPECTED をサポートします。
  102.  
  103. S_OK
  104.  
  105. OBJREF モニカは正常に作成されました。
  106.  
  107. 備考
  108.  
  109. クライアントは OBJREF モニカを使用して、サーバーのアドレス空間で実行
  110. 中のオブジェクトへのマーシャリングされたポイントを取得します。通常、
  111. サーバーは CreateObjrefMoniker を呼び出して OBJREF モニカを作成し、
  112. 次に IMoniker::GetDisplayName を呼び出し、最後にモニカを解放します。
  113. OBJREF モニカに対する表示名は、次の形式です。
  114.     OBJREF:nnnnnnnn 
  115.  
  116. nnnnnnnn は、コンピュータの場所、プロセスのエンドポイント、および実
  117. 行中のオブジェクトのインターフェイス ポインタ ID (IPID) をカプセル化
  118. する任意の 64 ビットのエンコーディングです。
  119.  
  120. 表示名は、テキストとしてクライアントへ転送できます。たとえば、表示名
  121. はクライアントがダウンロードする HTML ページに存在することができます。
  122.  
  123. クライアントは、表示名を MkParseDisplayName に渡すことができます。
  124. MkParseDisplayName は、表示名に基づき OBJREF モニカを作成します。次
  125. に、モニカの IMoniker::BindToObject メソッドへの呼び出しが、サーバー
  126. で実行中のインスタンスへのマーシャリングされたポインタを取得します。
  127. たとえば、アクティブ サーバー ページに含まれるサーバー側の COM コン
  128. ポーネントは、OBJREF モニカを作成し、その表示名を取得し、クライアン
  129. トのブラウザに送られる HTML 出力への表示名を書き込みます。クライアン
  130. ト側で実行するスクリプトは、表示名を使って実行中のオブジェクトをアク
  131. セスできます。たとえば、クライアント側の Visual Basic スクリプトは、
  132. 表示名を strMyName と呼ばれる変数に格納して次の行に含めることができ
  133. ます。
  134.     objMyInstance = GetObject(strMyName)
  135.  
  136. スクリプト エンジンは、内部的には MkParseDisplayName および 
  137. IMoniker::BindToObject を呼び出し、次に objMyInstance を使用して実行
  138. 中のオブジェクトを直接参照します。
  139.  
  140. 実行中のオブジェクトが静的 IPID を使用し、サーバー プロセスが常によ
  141. く知られているエンドポイントで同じコンピュータを実行する場合、OBJREF
  142. モニカの表示名は常に同じになります。その場合、サーバーはオブジェクト
  143. に対する要求を受信する度に計算する代わりに、表示名を格納することがで
  144. きます。
  145.  
  146. IMoniker - OBJREF モニカのインプリメント
  147.  
  148. OBJREF モニカは、ローカルでもリモートでもプロセス外サーバーで実行中
  149. のオブジェクト インスタンスへの参照を表します。モニカは、オブジェク
  150. ト インスタンスと、オブジェクトを実行中のコンピュータを識別します。
  151.  
  152. OBJREF モニカは、実行中のオブジェクトがプロセス外にあるという点を除
  153. いて、多くの点でポインタ モニカに類似しています。クライアントは、
  154. OBJREF モニカの IMoniker::BindToObject を呼び出し、その場所にかかわ
  155. りなく実行中のオブジェクトをアクセスするためにポインタを使用すること
  156. ができます。
  157.  
  158. ポインタ モニカとの重要な相違は、OBJREF モニカの表示名は HTML ページ
  159. に埋め込むことができ、モニカが表す実行中のオブジェクトは、クライアン
  160. トのスクリプト、アプレット、および ActiveX コントロールによってバイ
  161. ンドすることができることです。
  162.  
  163. 使用目的
  164.  
  165. OBJREF モニカを使用する主な目的は、インターネットを介して実行中のオ
  166. ブジェクト インスタンスへのアクセスを取得することです。アクティブ サ
  167. ーバー ページまたはダイナミック HTML コンテンツを生成するほかの方法
  168. は、アプレットまたは ActiveX コントロールへのパラメータに OBJREF モ
  169. ニカの表示名を指定します。アプレットまたはコントロールのコードは、
  170. CreateObjrefMoniker を呼び出して表示名に基づき OBJREF モニカを作成し
  171. ます。次に作成された OBJREF モニカで IMoniker::BindToObject を呼び出
  172. して、実行中のオブジェクト インスタンスへのアクセスを取得します。ア
  173. クティブ サーバー ページは、ページのクライアントへ戻す、実行中のオブ
  174. ジェクトへのポインタをマーシャリングします。
  175.  
  176. 備考
  177.  
  178. IMoniker::BindToObject  OBJREF モニカに対する pmkToLeft パラメータ
  179. は、NULL を指定する必要があります。OBJREF モニカは実行中のオブジェク
  180. トを表すため、何らかのアクティベーションを行うことはできません。オブ
  181. ジェクトが実行中ではない場合、BindToObject は E_UNEXPECTED を返して
  182. 失敗します。
  183.  
  184. IMoniker::BindToStorage  このメソッドは、実行中のオブジェクトを含む
  185. ストレージの要求されたインターフェイスへのマーシャリングされたポイン
  186. タを取得します。OBJREF モニカは実行中のオブジェクトを表すため、何ら
  187. かのアクティベーションを行うことはできません。オブジェクトが実行中で
  188. ない場合、BindToStorage は E_UNEXPECTED を返して失敗します。
  189.  
  190. IMoniker::Reduce  このメソッドは MK_S_REDUCED_TO_SELF を返し、同じモ
  191. ニカを渡します。
  192.  
  193. IMoniker::ComposeWith  pmkRight が非モニカの場合、返されるモニカは 
  194. NULL です。pmkRight が複合モニカで、その左端のコンポーネントが非モニ
  195. カの場合、返されるモニカは左端の非モニカが削除された複合モニカです。
  196. pmkRight が非モニカでも、左端に非モニカをもつ複合モニカでもない場
  197. 合、メソッドは fOnlyIfNotGeneric パラメータを確認します。パラメータ
  198. が FALSE の場合、メソッドは 2 つのモニカを結合して汎用の複合モニカを
  199. 生成します。パラメータが TRUE の場合、メソッドは *ppmkComposite に 
  200. NULL を設定して MK_E_NEEDGENERIC を返します。
  201.  
  202. IMoniker::Enum  このメソッドは、S_OK を返して ppenumMoniker に NULL 
  203. を設定します。
  204.  
  205. IMoniker::IsEqual  *pmkOther が OBJREF モニカで、両方のモニカへのパ
  206. スが (状況に依存しない比較によって) 同一の場合、このメソッドは S_OK 
  207. を返します。さもなければ、メソッドは S_FALSE を返します。
  208.  
  209. IMoniker::Hash  このメソッドは、モニカに対するハッシュ値を計算します。
  210.  
  211. IMoniker::IsRunning  OBJREF モニカは実行中のオブジェクト インスタン
  212. スを表すため、最新の呼び出しが失敗してこのオブジェクトが実行中でない
  213. 場合を除き、このメソッドは TRUE を返します。メソッドは、pmkToLeft を
  214. 無視します。
  215.  
  216. IMoniker::GetTimeOfLastChange  このメソッドは、E_NOTIMPL を返します。
  217.  
  218. IMoniker::Inverse  このメソッドは、非モニカを返します (たとえば、
  219. CreateAntiMoniker を呼び出した結果)。
  220.  
  221. IMoniker::CommonPrefixWith  2 つのモニカが等しい場合、このメソッドは 
  222. MK_S_US を返し、*ppmkPrefix に NULL を設定します。一方のモニカが 
  223. OBJREF モニカでない場合、このメソッドは両方のモニカを 
  224. MonikerCommonPrefixWith 関数に渡します。この関数は、一方のモニカが汎
  225. 用の複合モニカである状況を正しく処理します。
  226.  
  227. 共通のプレフィックスがない場合、メソッドは MK_E_ を返します。
  228.  
  229. IMoniker::RelativePathTo  このメソッドは E_NOTIMPL を返します。
  230.  
  231. IMoniker::GetDisplayName  このメソッドは、OBJREF モニカに対する表示
  232. 名を取得します。表示名は、コンピュータの場所、プロセスのエンドポイン
  233. ト、および実行中のオブジェクトのインターフェイス ポインタ ID (IPID) 
  234. をカプセル化する 64 ビットのエンコーディングです。将来の互換性のため
  235. に、表示名は URL の一部として指定できる文字に制限されています。
  236.  
  237. IMoniker::ParseDisplayName  pmkToLeft が NULL の場合、このメソッドは 
  238. MK_E_SYNTAX を返します。
  239.  
  240. IMoniker::IsSystemMoniker  このメソッドは S_OK を返し、
  241. MKSYS_OBJREFMONIKER を渡します。
  242.  
  243. VB6.0 データ型のサポート
  244.  
  245. Visual Basic(R) 6.0 では、ユーザーが定義したデータ構造を 
  246. Visual Basic 変数に含めることができます。DCOM95 は、これらの変数のリ
  247. モート処理をサポートします。
  248.  
  249. II. 解決された問題
  250. ------------------
  251.  
  252. 複数モジュールのアンロードでの競合状態
  253.  
  254. 複数のモジュールを同時にアンロードする場合、DCOM95 の以前のバージョ
  255. ンでは競合状態が発生しました。アンロードするモジュールの順序によって
  256. は、アクセス違反が発生します。この問題は、DCOM95 のこのリリースで修
  257. 正されました。
  258.  
  259. RPC プロトコルにネゴシエートする間デスクトップは応答しない
  260.  
  261. DCOM95 の以前のバージョンでは、RPC プロトコルにネゴシエートする間は
  262. メッセージのディスパッチは行われません。このような場合、RPC プロトコ
  263. ルへのネゴシエート中にユーザーが別のアプリケーションを起動すると、コ
  264. ンピュータは応答しなくなる可能性があります。30 秒経過すると、メッセ
  265. ージの処理が再開されます。この動作は DCOM95 の最新のリリースで変更さ
  266. れ、RPC プロトコルへのネゴシエート中でもアプリケーションを起動できま
  267. す。
  268.  
  269. 新しいアプリケーションを起動するとデスクトップが応答しない
  270.  
  271. RPC は、マルチスレッド アパートメント (MTA) に非表示ウィンドウを作成
  272. します。MTA は、DCOM の仕様ではメッセージをディスパッチする必要はあ
  273. りません。ユーザーがデスクトップから新しいアプリケーションを起動する
  274. 場合、Windows はこのイベントを通知するメッセージをほかのすべてのウィ
  275. ンドウへ送信し、返信を期待します。DCOM95 の以前のバージョンでは、非
  276. 表示 RPC ウィンドウは返信を返さず、Windows はハングする可能性があり
  277. ます。DCOM95 のこのバージョンはこの問題を解決し、RPC ウィンドウは新
  278. しいアプリケーションが起動されたときに、Windows が応答のないメッセー
  279. ジを送信することはありません。
  280.  
  281. 複数の IP アドレス ヒープが壊れる
  282.  
  283. ある特定の状況で 2 つ以上の IP アドレスを持つコンピュータで DCOM95 
  284. の以前のバージョンを実行すると、IP アドレス バッファがオーバーランし
  285. てヒープが壊れる可能性があります。この問題は、DCOM95 の最新のバージ
  286. ョンで解決されました。
  287.  
  288. 最初の IP アドレスのみ使用される
  289.  
  290. 2 つのネットワーク アダプタ カードを持つ (つまり 2 つの IP アドレス
  291. が異なるアドレス カードに割り当てられている) コンピュータで DCOM95 
  292. の以前のバージョンを実行すると、DCOM95 は 1 つのネットワーク アダプ
  293. タのみ使用します。DCOM95 のこのリリースでは、1 つめが機能しない場合
  294. は 2 つめのネットワーク アダプタを使用します。
  295.  
  296. RPC は複数の IP アドレスを試みる
  297.  
  298. 複数の IP アドレスを持つコンピュータにリモート プロシージャ コールを
  299. 行う場合、1 つめの IP アドレスへの接続に失敗すると、残りの IP アドレ
  300. スへの接続を試みます。
  301.  
  302. ファイル モニカは新たなパスの構文をサポートする
  303.  
  304. ファイル モニカは、"C:\bug\bug\..\..\foo.jpg." のように、<開始ディレ
  305. クトリ><相対パス> 形式の引数を作成することができます。DCOM95 1.1 で
  306. は、相対パス (たとえば "..\..\foo.jpg") または絶対パス (たとえば 
  307. "C:\foo.jpg") だけが指定できます。
  308.  
  309. Oleaut32.dll をアンロードするときの一般保護違反
  310.  
  311. DCOM95 の以前のバージョンでは、CoUninitialize を呼び出す前に 
  312. Oleaut32.dll をアンロードすると一般保護違反が発生します。この問題は、
  313. VB アプリケーションが Oleaut32.dll に静的にリンクするコントロールを
  314. 作成し、CoUninitialize を呼び出す前にコントロールを解放した場合に、
  315. 最も頻繁に発生します。DCOM95 の最新のリリースでは、一般保護違反は発
  316. 生しません。
  317.  
  318. Visual Basic データ型のマーシャリングおよびマーシャリング解除
  319.  
  320. Visual Basic の特定のデータ型のマーシャリングおよびマーシャリング解
  321. 除は、解決されました。64K より大きい配列パラメータが使用できるように
  322. なりました。型の別名を使用して定義した構造体は、正しくマーシャリング
  323. および非マーシャリングを行えるようになりました。
  324.  
  325. OleUninitialize でアトムが何回も削除される
  326.  
  327. この問題は、OleInitialize および OleUninitialize を何回も呼び出すア
  328. プリケーションで発生します。初期化中に OLE は多くのアトムを DDE PRC 
  329. のために追加します。アトムが別のスレッドによってすでに追加されている
  330. 場合、再度追加されます。ただし、初期化の解除中にアトムは常に削除され
  331. ますが、ハンドルは無効にはなりません。したがって、アトムが削除されて 
  332. OLE が再度追加されなくても、次に OleInitialize が呼び出されたときに
  333. は古いハンドルが存在します。このため、OleInitialize および 
  334. OleUninitialize を何回も呼び出した後は、すべての OLE アトムは無効に
  335. なります。この問題は、DCOM95 のこのリリースで解決されました。
  336.  
  337. ADO サーバーの正しいシャット ダウン
  338.  
  339. アクティブ データ オブジェクト (ADO) は、ポインタ モニカを使ってサー
  340. バー プロセスを開始します。DCOM95 の以前のバージョンには、ポインタ 
  341. モニカの参照カウンタが初期値を 0 ではなく 1  として作成されるという
  342. 問題がありました。したがって、ポインタ モニカの参照カウンタは決して 
  343. 0 にはならず、ポインタ モニカは解放されません。結果として、ADO サー
  344. バーへの最後のポインタが解放されても、サーバーはシャット ダウンされ
  345. ません。この問題は、DCOM95 のこのリリースで解決されました。
  346.  
  347. CoCreateInstance は DNS 名とともに機能する
  348.  
  349. DCOM95 の以前のバージョンでは、ローカル コンピュータの修飾名を使った 
  350. CoCreateInstance 呼び出しは、正しく機能しません。この問題は、DCOM95 
  351. のこのリリースで解決され、CoCreateInstance はローカル コンピュータで
  352. 正しくインスタンスを作成します。
  353.  
  354. 非常に大きい複合ファイルによってルート ストレージのコミットが遅くなる
  355.  
  356. DCOM95 の以前のバージョンでは、STGM_TRANSACTED モードで開かれたルート
  357. ストレージのコミット時間は、複合ファイルが非常に大きくなる (たとえば 
  358. 400M) ため非常に遅くなります。内部ページ テーブルの制限が増加したた
  359. め、これは問題にはなりません。
  360.  
  361. 再作成された MTA からのオブジェクトのエクスポート
  362.  
  363. DCOM95 の以前のバージョンでは、マルチスレッド アパートメント (MTA) 
  364. が初めてプロセスに作成された場合でなければ、サーバーは MTA からオブ
  365. ジェクトをエクスポートすることはできません。この問題は解決されました。
  366. サーバーが MTA を作成し、これを破棄して MTA を再作成した場合、オブジ
  367. ェクトは MTA からエクスポートできます。
  368.  
  369. Visual Basic 4 実行可能ファイルの複数インスタンス
  370.  
  371. DCOM95 v1.1 で、Visual Basic 4 の同じ実行可能ファイルの複数のインス
  372. タンスを開始して LIFO (後入れ先出し) 以外の順序でインスタンスをシャ
  373. ット ダウンすると、最後の実行可能ファイルが停止する可能性があります。
  374. これは、Microsoft Exchange の E-Forms でも同様です。この問題は、
  375. DCOM95 の最新のリリースで解決されました。Visual Basic 4 の実行可能フ
  376. ァイルは、どのような順番でもシャット ダウンできます。
  377.  
  378. Visual Basic ファイル名の拡張文字
  379.  
  380. 指定された言語の拡張文字を使って Visual Basic モジュールまたはクラス
  381. に名前を付けた場合、別のロケール用に設定されたコンピュータでは開けな
  382. い可能性があります。この問題は解決されました。
  383.  
  384. III. 既知の問題
  385. ---------------
  386.  
  387. Corel WordPerfect Suite 7: インストールが無効なページ フォールトを引
  388. き起こす
  389.  
  390. DCOM95 を実行中の Windows 95 システムに Corel WordPerfect Suite 7 を
  391. インストールする場合、インストール中に PfOd70.pfc で無効なページ フ
  392. ォールトが発生する可能性があります。このエラーが発生した場合、エラー 
  393. メッセージ ダイアログ ボックスを閉じてください。セットアップは、正し
  394. く続行されます。
  395.  
  396. Microsoft Access95: データベースのレプリケーションが機能しない
  397.  
  398. DCOM95 がインストールされたコンピュータで Microsoft Access 95 を使っ
  399. て Access データベースのレプリケーションを行った場合、次のエラー メ
  400. ッセージが表示される可能性があります。
  401. エラー メッセージ:
  402.  
  403. MSJTRCLR.DLL を見つけることができないか、
  404. 初期化できないため、この操作を完了できません。
  405.  
  406. これは、Microsoft Access 95 の問題です。レプリケーション ツールを使
  407. うよりも、Access のオブジェクト モデルを使用するプログラムを作成して
  408. 解決できます。または、レプリケーション用のブリーフケースを使用します。
  409. Microsoft Access 97 は、この問題は影響しません。
  410.  
  411. WordPerfect
  412.  
  413. WordPerfect 文書が埋め込み Corel スプレッドシートおよびほかの埋め込
  414. みオブジェクト (たとえば、ビットマップ) を含むスプレッドシートの場合、
  415. 「最も内側のオブジェクトを閉じたときにネットワーク接続を失います。」
  416. という意味の警告ダイアログが表示される可能性があります。このような警
  417. 告は、4~5 種類ありますが、すべて問題ありません。ダイアログを閉じて、
  418. 継続します。
  419.  
  420. BSTR 変換ルーチンを使用するマルチスレッド アパートメント (MTA) クラ
  421. イアントは DDE メッセージを妨害する可能性がある
  422.  
  423. 自動 BSTR 変換ルーチン (たとえば、BstrFromR4) は、非表示ウィンドウを
  424. 作成して型変換を容易にします。これらのウィンドウは、Windows メッセー
  425. ジ キューを提供しません。このようなウィンドウが MTA クライアント内で
  426. 作成された場合、DDE メッセージは妨害される可能性があります。クライア
  427. ント スレッドは、MTA プログラミング モデルではメッセージ キューを提
  428. 供しません。そうでない場合、最上位ウィンドウは、グローバル ブロード
  429. キャスト メッセージを妨害します。
  430.  
  431. この問題を解決する方法は、2 つあります。シングルスレッド アパートメ
  432. ント (STA) クライアントから BSTR 変換ルーチンを呼び出すか、クライア
  433. ントの MTS スレッドを STA スレッドのように機能させるかです。STA スレ
  434. ッドは、メッセージ キューを提供する必要があります。スレッドが Win32 
  435. ハンドルで妨害する場合、MsgWaitForMultipleObjects 関数を呼び出して 
  436. Windows メッセージを同時にディスパッチする必要があります。
  437.  
  438. 127 文字より長い DLL パス名ではエラーが発生する
  439.  
  440. DLL を 128 文字以上のパス名で登録すると登録は成功しますが、この DLL 
  441. がサポートするオブジェクトをアクセスしたときに CoCreateInstance また
  442. は CoGetClassObject はエラー (REGDB_E_CLASSNOTREG) を返します。
  443.  
  444. IV. Windows NT 上の DCOM との違い
  445. ---------------------------------
  446.  
  447. DCOM95 のセキュリティ機能
  448.  
  449. DCOM95 の主要な機能およびアプリケーション プログラミング インターフ
  450. ェイス (API) は、Windows 95 および Windows NT 4.0/5.0 で同じです。た
  451. だし、オペレーティング システムのセキュリティの基盤が異なるため、セ
  452. キュリティに関連する特定の機能が異なります。システムのセキュリティの
  453. 既定の設定を使用することをお勧めします。また、ファイルシステムで "ユ
  454. ーザー レベル" セキュリティを有効にすることが必要です (以下を参照)。
  455.  
  456. 次のサービスを使用して、既定のセキュリティを変更できます。
  457. *    CoInitializeSecurity 
  458. *    CoQueryAuthenticationService 
  459. *    CoQueryProxyBlanket 
  460. *    CoSetProxyBlanket 
  461. *    CoQueryClientBlanket 
  462. *    IClientSecurity インターフェイス
  463. *    IServerSecurity インターフェイス
  464.  
  465. ただし、Windows 95 のセキュリティの基盤が異なるため、DCOM for 
  466. Windows NT の一部の機能は Windows 95 では利用できません。
  467.  
  468. 特に、スレッドやプロセス トークンに関連するセキュリティ コンテキスト
  469. がないだけでなく、(アクセス制御リスト (ACL) を作成するような) Win32 
  470. API のセキュリティ関数や AccessCheck 関数がないことを考慮する必要が
  471. あります。このため、DCOM95 は偽装 (特に、IServerSecurity インターフ
  472. ェイスへの CoImpersonateClient および CoRevertToSelf ヘルパー機能) 
  473. をサポートしません。偽装は、Windows NT 4.0 ではスレッド トークンおよ
  474. びプロセス トークン セキュリティに基づいています。偽装は、通常ファイ
  475. ル システム、ほかのプロセス、およびネットワークのような制限付きのシ
  476. ステム リソースへのアクセスを制御するために自動的に使用されます。こ
  477. れらのリソースは、Windows 95 では制限されません。
  478.  
  479. ただし、DCOM95 は、ACL およびアクセス チェック機能を提供するためのさ
  480. まざまなヘルパー オブジェクトを開発者のために用意しています。これら
  481. のオブジェクトは、システムおよびユーザーが定義したリソースまたはデー
  482. タへのアクセスを、リモート クライアントが明示的に制御するために使用
  483. できます。これらのヘルパー オブジェクトは、IAccessControl インターフ
  484. ェイスをインプリメントするシステム オブジェクト 
  485. CLSID_DCOMAccessControl によって提供されます。
  486.  
  487. Windows 95/98 および Windows NT 間の移植性を考慮する場合は、
  488. IAccessControl を使ってセキュリティ権限をプログラムで管理する必要が
  489. あります。CLSID_DCOMAccessControl オブジェクトは、DCOM95 のすべての
  490. リリースおよび Windows NT 4.0 SP2 以降のバージョンで使用できます。
  491. IAccessControl の詳細については、Platform SDK ドキュメントを参照して
  492. ください。
  493.  
  494. セキュリティの起動およびアクセス
  495.  
  496. DCOM95 では起動サーバーがサポートされていないため、誰がサーバークラ
  497. ス コードを起動するかを制御することはできません。サーバー/クラスは、
  498. リモート クライアントへ接続するために実行中である必要があります。ま
  499. た、これらのサーバーを使用する必要があります。
  500.  
  501. DCOM95 は、すでに実行中のクラス/サーバーへ接続することはできません。
  502. アクセス セキュリティは、\APPID\{.}\AccessPermissions レジストリ キ
  503. ーを介してサポートされ、DCOMCNFG ツール、インストール、サーバー コー
  504. ドのセットアップによって調整されます。認証されないユーザーは、(設定
  505. ツールによって静的に、または CoInitializeSecurity 関数によって動的に)
  506. 認証されない接続をサポートするクラスを設定した場合にサーバーを使用す
  507. ることができます。また、任意の ACL を作成して、どのユーザーまたはグ
  508. ループが特定のサーバーへアクセスできるかを定義することができます。
  509.  
  510. 認証レベル
  511.  
  512. DCOM95 クライアントは、認証レベルを使用して DCOM 呼び出しを作成でき
  513. ます。コールバックを受け取る DCOM95 サーバーまたはクライアントは、
  514. RPC_C_AUTHN_LEVEL_NONE または RPC_C_AUTHN_LEVEL_CONNECT 認証レベルを
  515. 使用した場合のみ、DCOM 呼び出しを受け取ることができます。
  516.  
  517. トランスポート
  518.  
  519. DCOM95 は、TCP 接続のみサポートします。TCP/IP をインストールしていな
  520. い場合は、DCOM95 はコンピュータをまたがって COM をサポートすることは
  521. できません。
  522.  
  523. レジストリの設定
  524.  
  525. HKEY_LOCAL_MACHINE\Software\Microsoft\OLE の下の次のレジストリ キー
  526. は、DCOM95 によって作成されます。
  527.  
  528. EnableDCOM (既定値は "Y")   そのコンピュータの DCOM を使用可能にします。
  529. "N" を設定した場合、コンピュータはリモート コンピュータのオブジェク
  530. トへ接続したり、起動したりできません。また、リモート コンピュータは、
  531. ローカル コンピュータのオブジェクトへ接続することができません。"Y" 
  532. を設定した場合、(次に説明するように EnableRemoteConnect='N' の場合) 
  533. クライアントとしてリモート オブジェクトへ接続、または (次に説明する
  534. ように EnableRemoteConnect='Y' の場合) クライアント/サーバーの完全な
  535. 接続を行うことができます。
  536.  
  537. EnableRemoteConnect (既定値は "N")    COM サーバーを使用可能にして、
  538. リモート クライアントをサポートします。"Y" を設定した場合、ローカル 
  539. オブジェクトのインターフェイスへの参照はリモート クライアントへ渡さ
  540. れ、リモート クライアントは実行中のオブジェトに接続できます。"N" を
  541. 設定した場合、このコンピュータはリモート オブジェクトへ接続できます
  542. が、サーバーとして機能することはできません。このコンピュータは、実行
  543. 中のオブジェトへ接続できません。
  544.  
  545.  
  546. さらに、HKEY_CLASSES_ROOT\CLSID の下には次のレジストリ キーがあります。
  547.  
  548. {bdc67890-4fc0-11d0-a805-00aa006d2ea4}\InstalledVersion
  549. DCOM95 のバージョン番号を、"a,b,c,d" の形式で含みます。この値は、イ
  550. ンターネット コンポーネント ダウンロードが使用して、DCOM95 がインス
  551. トールされているかどうかを判断します。この値は、セットアップ中に追加
  552. されて変更できません。
  553.  
  554. リモート サーバー ホストとして Windows 95 を使用する
  555.  
  556. Windows 95 は、次の条件の場合にリモート サーバー ホストになることが
  557. できます。
  558. *    起動は行いません。クライアントが接続できるように、サーバー プロ
  559.     セスが実行されている必要があります。
  560. *    保護された接続が必要な場合、サーバー (およびコールバックの場合は
  561.     クライアント) は、セキュリティ プロバイダ セット名とともにユーザ
  562.     ー レベルのアクセス制御を行う必要があります。 
  563. *    レジストリ値 "EnableRemoteConnect" には、"Y" を設定する必要があ
  564.     ります。
  565.  
  566. DCOM95 は、Windows NT ドメイン セキュリティ プロバイダを使って広範囲
  567. にテストされました。ほかのセキュリティ プロバイダを使用すると、問題
  568. が発生する可能性があります。
  569.  
  570. ユーザー レベルのアクセス制御を行うには、Filesec.vxd をインストール
  571. する必要があります。このファイルは、通常、ファイルおよび印刷共有をイ
  572. ンストールした場合に Windows 95 コンピュータにインストールされます。
  573.  
  574. ユーザー レベルのアクセス制御を使用可能にするには、コントロール パネ
  575. ルの [ネットワーク] ダイアログ ボックスを開きます。[アクセスの制御] 
  576. タブをクリックし、[ユーザー レベルでアクセスを制御する] チェック ボ
  577. ックスをオンにして、セキュリティ ドメイン名を入力します。これは、ユ
  578. ーザーのコンピュータからネットワーク上のディレクトリを共有する方法に
  579. 影響します。詳細については、オンライン ドキュメントを参照してくださ
  580. い。コントロール パネルの [ネットワーク] の [アクセスの制御] タブが
  581. 表示されない場合は、ネットワーク クライアント サービスをインストール
  582. する必要があります。オンライン ヘルプのキーワードで [ネットワーク ク
  583. ライアント] の下の [セットアップ] を選択して、表示されたトピックの 
  584. [ここをクリック] をクリックします。
  585.  
  586. V. 再配布
  587. ---------
  588.  
  589. DCOM95 の再配布については、『使用許諾契約書』(license.txt) の再配布
  590. の条件をお読みください。
  591.  
  592. VI. サポート情報
  593. ----------------
  594.  
  595. DCOM95 アプリケーション開発は、マイクロソフト テクニカル サポートに
  596. よってサポートされます。スタンダードサポートによって、質問していただ
  597. くことができます。また、年間契約プライオリティサポート、または個別に
  598. スポット サポート (本来は 1 つの質問につき 1 インシデント) を契約し
  599. て、質問していただくこともできます。
  600.  
  601. マイクロソフトのサポート オプションの詳細については、サポート契約セ
  602. ンター (03-5354-4700  9:30 - 12:00 13:00 - 17:30 土日祝日を除く) に
  603. お問い合わせください。または、http://www.asia.microsoft.com/japan
  604. /support/supportnet/refguide/phone.htm を参照してください。
  605.  
  606. なお、サポート契約センターでは、テクニカル サポートを行っていない点
  607. をご了承ください。
  608.  
  609. マイクロソフトのサポート技術情報については、次のページを参照してくだ
  610. さい。
  611.     http://www.asia.microsoft.com/japan/support/
  612.  
  613.  
  614. VII. ファイル一覧
  615. -----------------
  616.  
  617. 次の表は、DCOM95 とともに配布されるファイルのバージョン番号を示しま
  618. す。
  619.  
  620. oleaut32.dll     2.40.4273
  621. secur32.dll      4.10.1999
  622. compobj.dll      2.3.2
  623. ole2.dll         2.3.2
  624. ole32.dll        4.71.2900
  625. olecnv32.dll     4.71.2900
  626. olethk32.dll     4.71.2900
  627. rpcltc1.dll      4.71.2900
  628. rpcltc5.dll      4.71.2900
  629. rpcltccm.dll     4.71.2900
  630. rpclts5.dll      4.71.2900
  631. rpcltscm.dll     4.71.2900
  632. rpcns4.dll       4.71.2900
  633. rpcrt4.dll       4.71.2900
  634. rpcss.exe        4.71.2900
  635. storage.dll      2.3.2
  636. stdole2.tlb      2.40.4273
  637. stdole32.tlb     2.1
  638. imagehlp.dll     4.00
  639. dllhost.exe      4.71.2900
  640. comcat.dll       5.0
  641. iprop.dll        4.00
  642. rpcmqcl.dll      4.71.2900
  643. rpcmqsvr.dll     4.71.2900
  644. olepro32.dll     5.0.4273
  645. asycfilt.dll     2.40.4273
  646. dcom2w98.dll     2.10.35.35
  647.  
  648. 次の表は、DCM95CFG とともに配布されるファイルのバージョン番号を示し
  649. ます。
  650.  
  651. dcomcnfg.exe     5.00.1603.0
  652. ciscnfg.exe      4.71.2618
  653.